#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
using Cephei.QL.Times;
using Cephei.QL;
namespace Cephei.QL.Experimental.Commodities
{
     // <summary> 
	// ! base class for commodity indexes
	// </summary>
    [Guid ("6B6D835B-2E0A-4728-A0C4-CF63B8F67422"),ComVisible(true)]
	public interface ICommodityIndex 
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 ICommodityIndex AddQuote(DateTime quoteDate, Double quote);
        
		 Cephei.QL.Times.ICalendar Calendar {get;}
        
		 ICommodityIndex ClearQuotes {get;}
        
		 Cephei.QL.Experimental.Commodities.ICommodityType CommodityType {get;}
        
		 Cephei.QL.ICurrency Currency {get;}
        
		 Boolean Empty {get;}
        
		 Cephei.QL.Experimental.Commodities.ICommodityCurve ForwardCurve {get;}
        
		 Boolean ForwardCurveEmpty {get;}
        
		 Double ForwardPrice(DateTime date);
        
		 Boolean IsValidQuoteDate(DateTime quoteDate);
        
		 DateTime LastQuoteDate {get;}
        
		 Double LotQuantity {get;}
        
		 String Name {get;}
        
		 Double Price(DateTime date);
        
		 Cephei.QL.Experimental.Commodities.IUnitOfMeasure UnitOfMeasure {get;}
        
		 ICommodityIndex Update {get;}
    }

    // <summary> 
	// ! base class for commodity indexes Factory
	// </summary>
   	[ComVisible(true)]
    public interface ICommodityIndex_Factory // : Collection_Factory<ICommodityIndex, ICell<ICommodityIndex>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
    }
}

